Software is often deployed in a service oriented architecture (SOA) environment. SOA is a set of principles and methodologies for designing and developing software in the form of interoperable services. These services are well-defined business functionalities that are built as software components (discrete pieces of code and/or data structures) that can be reused for different purposes.
Typically, services in software development may be designated as either production or development. Production services are services that have been tested extensively and are deployed in a production environment, meaning that the production services are being used by users of the software application. Development services are services that are currently under development by programmers, and although they may be in the process of being tested, they are not yet deployed to the production environment. One challenge often encountered in an SOA environment is fully testing a development service with other production services. A development service that is incorrectly deemed to be production-ready may not perform as expected in a production environment, leading to incorrect data dissatisfied customers, and other consequences.
Furthermore, it can be cumbersome to make changes to an application or an SOA implementation to direct the application and/or SOA components to use a particular development server for example. For example, changes to server routing information may rely on DNS services. DNS services may be slow to recognize and propagate changes. Changing the details within the software application may require that the new server information (e.g. URLs) be provided to the computing device of each user, which can be a cumbersome process, or, in some manners, that the server address to which a server name resolves be changed with the DNS service, which can also be cumbersome.
For convenience, like reference numerals refer to like parts and components in the various drawings.